- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
В конструкторе менеджера можно указать горизонтальные и вертикальные промежутки между областями, задаваемые в пикселах.
Если в контейнер помещается менее пяти компонентов, то некоторые области не используются и не занимают места в контейнере.
Если не занята область CENTER, тогда компоненты прижимаются к границам контейнера.
Так как менеджер компоновки BorderLayout размещает не больше пяти компонентов, можно использовать в качестве компонентов панели, в которые дополнительно размещать компоненты.
GridLayout
Менеджер компоновки GridLayout размещает компоненты в таблицу с заданным в конструкторе числом строк и столбцов.
Все компоненты получают одинаковый размер.
В конструкторе также можно задать промежутки между компонентами в пикселах по горизонтали и вертикали.
Конструктор по умолчанию менеджера задает таблицу размером 0 на 0 без промежутков между компонентами. Компоненты будут располагаться в одной строке.
Компоненты размещаются менеджером GridLayout слева направо по строкам созданной таблицы в том порядке, в котором они заданы в методах add контейнера.
Нулевое количество строк или столбцов означает, что менеджер сам создаст нужное их число.
CardLayout
Менеджер компоновки CardLayout показывает в контейнере стек компонентов, отображая только один, первый компонент.
Остальные компоненты лежат под первым в определенном порядке.
Их расположение определяется порядком добавления в контейнер с помощью метода add.
Следующий компонент можно показать методом next менеджера, предыдущий – методом previous, последний – методом last, первый – методом first.
Аргумент этих методов – ссылка на контейнер, в который помещены компоненты.
В конструкторе менеджера можно указать горизонтальные и вертикальные отступы от границ контейнера.
Менеджер CardLayout позволяет организовать и произвольный доступ к компонентам.
Метод add тогда имеет в качестве аргумента имя компонента.
Нужный компонент с именем можно показать методом show, в котором указывается имя нужного компонента и контейнер.
Тут нужно учесть, что для фрейма мы добавляем компоненты не в сам фрейм, а в панель содержимого contentPane.
GridBagLayout
Менеджер компоновки GridBagLayout позволяет размещать компоненты наиболее гибко, задавая размеры и положение каждого компонента.
В классе GridBagLayout есть только один конструктор, конструктор по умолчанию, без аргументов.
Менеджер GridBagLayout, в отличие от других менеджеров компоновки, не содержит правил размещения. Он играет только организующую роль.
Все правила размещения компонентов задаются в объекте другого класса, GridBagConstraints, который указывается в методе add добавления компонента в контейнер.
Менеджер размещает компоненты в таблице с неопределенным заранее числом строк и столбцов.
Один компонент может занимать несколько ячеек этой таблицы, заполнять ячейку целиком, располагаться в ее центре, углу или прижиматься к краю ячейки.
Класс GridBagConstraints содержит одиннадцать полей, определяющих размеры компонентов, их положение в контейнере и взаимное положение, и несколько констант – значений полей.
Как правило, объект класса GridBagConstraints создается конструктором по умолчанию, затем значения нужных полей определяются простым присваиванием новых значений.
Здесь поле gridx указывает номер строки, поле gridy указывает номер столбца, поле gridwidth указывает количество занимаемых ячеек в строке, поле ipady указывает сколько добавляется к минимальной высоте компонента, поле fill используется, когда область отображения компонента больше, чем размер компонента.
GroupLayout
Менеджер компоновки GroupLayout работает с горизонтальной и вертикальной компоновкой отдельно.
Это означает, что каждый компонент должен быть определен дважды в горизонтальной и вертикальной компоновке.
Если вы забудете это сделать, GroupLayout выбросит исключение.
Менеджер GroupLayout использует два типа размещения компонентов: последовательное и параллельное расположение.
При последовательном размещении компоненты просто размещаются один за другим по одной оси.
Позиция каждого компонента определяется относительно предыдущего компонента.
Второй способ размещает компоненты параллельно – поверх друг друга в одном и том же месте.
Компоненты могут быть выровнены по базовой линии, по верху или низу по вертикали.
По горизонтали они могут быть выровнены влево, вправо или по центру, если компоненты не имеют одинакового размера.
Обычно компоненты, размещенные параллельно по одной оси, размещаются последовательно по другой оси, так что они не перекрываются.
Таким образом эти размещения могут быть вложенными, создавая иерархию.
Расстояние между компонентами или отступы можно рассматривать как невидимую составляющую определенного размера.
Отступы произвольного размера могут быть добавлены к группам компонентов, как отдельные компоненты, с помощью методов для групп GroupLayout.ParallelGroup и GroupLayout.SequentialGroup.
Используя отступы, вы можете точно контролировать расстояние между компонентами или от границы контейнера.
Метод setAutoCreateGaps устанавливает, должен ли автоматически создаваться промежуток между компонентами при последовательном размещении.
Метод setAutoCreateContainerGaps устанавливает, должен ли автоматически создаваться промежуток между контейнером и компонентами, которые касаются границы контейнера, при параллельном размещении.
Метод setHorizontalGroup создает горизонтальную группу компонентов, а метод setVerticalGroup создает вертикальную группу компонентов, при этом мы определяем, какая это будет группа – с последовательным размещением компонентов или параллельным размещением.
Для определения типа группы используются методы createSequentialGroup и createParallelGroup.
Метод addComponent добавляет компонент в группу, а метод addGroup добавляет группу.
В этом примере мы создаем горизонтальную группу с последовательным размещением, в которую добавляем кнопку и группу.
По горизонтальной оси кнопки 2 и 3 занимают одно и тоже место, поэтому эта группа будет параллельной.
И в нее мы добавляем кнопки 2 и 3.
Теперь по вертикальной оси у нас все кнопки расположены последовательно, поэтому для вертикальной группы мы создаем последовательную группу, в которую добавляем все три кнопки.
Таким образом видно, что при работе с менеджером GroupLayout нужно сначала создать визуальный макет, а затем на его основе создавать группы.
BoxLayout и Box
Менеджер компоновки BoxLayout используется для размещения компонентов по вертикали или по горизонтали.
Менеджер компоновки BoxLayout создается с помощью конструктора, первым параметром которого указывается контейнер.
Второй параметр задает способ расположения компонентов в этом контейнере с помощью одной из констант X_AXIS – расположение слева направо, Y_AXIS – расположение сверху вниз, LINE_AXIS и PAGE_AXIS – расположение определяется контейнером.
Если задано горизонтальное расположение компонентов, тогда менеджер пытается сделать высоту всех компонентов одинаковой, равной высоте самого высокого компонента.
При вертикальном расположении менеджер старается выровнять ширину компонентов по самому широкому компоненту.
Панель Box – это контейнер, который использует менеджер компоновки BoxLayout.
Вы можете легко создавать сложные компоновки компонентов, помещая их в несколько вложенных ящиков Box.
Панель Box создается с помощью статического метода createHorizontalBox для горизонтального размещения компонентов или статического метода createVerticalBox для вертикального размещения компонентов.
Класс Box также предоставляет статические методы, которые создают невидимые компоненты, которые можно использовать для улучшения компоновки.
Их можно даже использовать в контейнерах, которые не являются панелями Box, например, в панели JPanel.
Вы можете отдельно управлять выравниванием каждого компонента, вызывая следующие методы setAlignmentX, выравнивание о оси х от центра контейнера, и setAlignmentY, выравнивание по оси y, которые компонент наследует от класса Component.
strut- это невидимый компонент, который имеет фиксированный размер в пикселях.
Создается strut с помощью статических методов createHorizontalStrut и createVerticalStrut,

